#include "sdl_layer.h"

sdl_layer::sdl_layer(int _prior = 10, const std::string & nazw = "sdl_layer") :
sdl_prim(nazw),
priority(_prior),
paused(false)
{
    _msg("layer", 6, name() << ": wkładam się na listę zadań!");
    // zadanie "wkłada się" samo na listę oczekujących zadań i dlatego nie trzeba go ręcznie wkładać do głównej pętli
    submitted_layers.push_back(sdl_ptr<sdl_layer > (this));
}

void sdl_layer::update()
{
}

void sdl_layer::pause()
{
    _msg("layer", 3, name() << ": zadanie wstrzymane");
    paused = true;
}

void sdl_layer::unpause()
{
    _msg("layer", 3, name() << ": zadanie wznowione");
    paused = false;
}

bool sdl_layer::is_paused()
{
    return paused;
}


///porównywanie do sortowania listy zadań

bool operator<(const sdl_ptr<sdl_layer> & a, const sdl_ptr<sdl_layer> & b)
{
    return a->priority < b->priority;
}

///operator do pisania

std::ostream & operator<<(std::ostream & o, const sdl_layer & a)
{
    o << a.priority << ": " << a.name();
    return o;
}

std::list<sdl_ptr<sdl_layer> > sdl_layer::submitted_layers;
